package com.daniel.juc.function;

import java.util.function.Consumer;
import java.util.stream.Stream;

/**
 * Consumer 消费型接口：只有输入参数，没有返回值
 *
 * @author Daniel
 * @version V1.0
 * @date 2020/5/21 11:25
 */
public class Demo03 {
	public static void main(String[] args) {
		// Consumer<String> consumer = new Consumer<String>() {
		// 	@Override
		// 	public void accept(String s) {
		// 		System.out.println("hello-> " + s);
		// 	}
		// };

		// Consumer<String> consumer = (str) -> {
		// 	System.out.println("hello -> " + str);
		// };
		//
		// consumer.accept("kim");

		Stream<String> stream = Stream.of("aaa", "bbb", "ddd", "ccc", "fff");

		//① 使用consumer接口实现方法
		System.out.println("① 使用consumer接口实现方法");
		Consumer<String> consumer = new Consumer<String>() {
			@Override
			public void accept(String s) {
				System.out.println(s);
			}
		};
		stream.forEach(consumer);
		stream.close();

		stream = Stream.of("aaa", "bbb", "ddd", "ccc", "fff");
		//② 使用lambda表达式，forEach方法需要的就是一个Consumer接口
		System.out.println("② 使用lambda表达式，forEach方法需要的就是一个Consumer接口");
		consumer = (s) -> System.out.println(s);
		stream.forEach(consumer);
		stream.close();

		stream = Stream.of("aaa", "bbb", "ddd", "ccc", "fff");
		//③ 使用方法引用，方法引用也是一个consumer
		System.out.println("③ 使用方法引用，方法引用也是一个consumer");
		consumer = System.out::println;
		stream.forEach(consumer);
		stream.close();
	}
}
